<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <title></title>
        <script type="text/javascript" src="../internal.js"></script>
        <script type="text/javascript" src="../../../jquery.js"></script>
        <script type="text/javascript" src="../../../bootstrap/bootstrap.js"></script>
        <link rel="stylesheet" href="../../../bootstrap/bootstrap.css">
        <link rel="stylesheet" href="../../../bootstrap/bootstrap-responsive.css">
        <style type="text/css">
            *{color: #838383;margin: 0;padding: 0}
            a {text-decoration: none;}
            .sqlopt a {
                color: #005580;
                text-decoration: none;
            }
            .sqlopt a:hover {
                text-decoration: underline;
            }
            html,body {font-size: 12px;}
            body {
                padding-left: 20px;padding-right: 20px;
            }
        </style>
    </head>
    <body>
        <div id="tblwrap" style="padding-top:10px;">
            <table class="table table-striped table-bordered" style="margin-top:18px;margin-bottom: 0;">
                <thead>
                    <tr>
                        <th> <span> 控件名称 ：</span><span class="label label-important">*</span> </th>
                        <th> <span> 类型 ：</span></th>
                    </tr>
                    <tr>
                        <td>
                            <input id="itemName" type="text" placeholder="必填项" style="width:203px;"/>
                        </td>
                        <td>
                            <select onchange="javascript:fnTypeChange(this.value);" style="width:209px;" id="itemType">
                                <optgroup label="----单行输入框----">
                                    <option value="sys_date">当前日期，形如 1999-01-01</option>
                                    <option value="sys_date_cn">当前日期，形如 2009年1月1日</option>
                                    <option value="sys_date_cn_short3">当前日期，形如 2009年</option>
                                    <option value="sys_date_cn_short4">当前年份，形如 2009</option>
                                    <option value="sys_date_cn_short1">当前日期，形如 2009年1月</option>
                                    <option value="sys_date_cn_short2">当前日期，形如 1月1日</option>
                                    <option value="sys_time">当前时间</option>
                                    <option value="sys_date">当前日期 [日历控件]</option>
                                    <option value="sys_datetime">当前日期+时间 [日历控件]</option>
                                    <option value="sys_week">当前星期中的第几天，形如 星期一</option>
                                    <option value="sys_userid">当前用户id</option>
                                    <option value="sys_realname">当前用户姓名</option>
                                    <option value="sys_deptname">当前用户部门</option>
                                    <!--option value="sys_realname_date">当前用户姓名+日期</option>
                                    <option value="sys_realname_datetime">当前用户姓名+日期+时间</option>
                                    <option value="sys_formname">表单名称</option>
                                    <option value="sys_runname">工作名称/文号</option>
                                    <option value="sys_rundate">流程开始日期</option>
                                    <option value="sys_rundatetime">流程开始日期+时间</option>
                                    <option value="sys_runid">流水号</option>
                                    <option value="sys_autonum">文号计数器</option>
                                    <option value="sys_ip">经办人ip地址</option>
                                    <option value="sys_manager1">部门主管(本部门)</option>
                                    <option value="sys_manager2">部门主管(上级部门)</option>
                                    <option value="sys_manager3">部门主管(一级部门)</option-->
                                    <!--option value="sys_sql">来自sql查询语句</option-->
                                </optgroup>
                                <!--optgroup label="----下拉菜单----">
                                    <option value="sys_list_dept">部门列表</option>
                                    <option value="sys_list_user">人员列表</option>
                                    <option value="sys_list_pos">角色列表</option>
                                    <option value="sys_list_prcsuser1">流程设置所有经办人列表</option>
                                    <option value="sys_list_prcsuser2">本步骤设置经办人列表</option>
                                    <option value="sys_list_manager1">部门主管(本部门)</option>
                                    <option value="sys_list_manager2">部门主管(上级部门)</option>
                                    <option value="sys_list_manager3">部门主管(一级部门)</option>
                                    
                                </optgroup-->
                            </select>
                        </td>
                    </tr>
                </thead>
                <tbody id='itemAttr'>
                    <tr>
                        <th> <span> 控件样式 ：</span> </th>
                        <th> <span> 可见性 ：</span> </th>
                    </tr>
                    <tr>
                        <td>
                            <div class="controls">
                                <div class="input-prepend input-append">
                                    <span class="add-on">字体大小</span><input style="display:inline;width: 32px;" class="span2" id="itemSize" size="1" type="text"><span class="add-on">px</span>
                                    <span class="add-on">宽</span><input style="display:inline;width: 32px;" class="span2" id="itemWidth" size="1" type="text"><span class="add-on">px</span>
                                </div>
                            </div>
                        </td>
                        <td>
                            <label> <input id="hidden" type="checkbox"> 隐藏 </label>
                        </td>
                    </tr>
                </tbody>
                <tbody id="itemSql" style="display:none;">
                    <tr> <th colspan="2"> SQL查询语句 ('号用`号替换) <span class="sqlopt" style="float:right"><a class="btn" title="SQL书写指导" onclick="fnShowGuide();" href="javascript:;"><i class="icon-question-sign"></i></a>  <a class="btn" title="测试SQL语句" onclick="fnCheckSql(true);" href="javascript:;"><i class="icon-play"></i></a></span></th> </tr>
                    <tr>
                        <td colspan="2">
                            <textarea style="width:440px;height: 45px;" id="txtSql" title="如宏控件类型选择来自SQL查询语句，则填写"></textarea>
                        </td>
                    </tr>
                </tbody>
            </table>
        </div><!-- end tblwrap-->
        <div style="display:none;margin-bottom: 27px;">
            <div class="page-header">
                <h3>SQL书写指导<span style="position: fixed;right: 20px;"><a href="javascript:;" title="回到控件属性页" onclick="fnShowGuide();" class="btn"><i class="icon-home"></i></a></span></h3>
            </div>
            <!--div>
                <div class="alert alert-error">
                    <a class="close" data-dismiss="alert">×</a>
                    <strong>注意！</strong> SQL语句中的单引号请用符号`替换（该符号在键盘TAB上方）。
                </div>
                <blockquote>
                    <p>宏控件可以代替手工输入，实现根据用户指定要求进行自动取值，使得工作流的表单填写更加智能与方便，宏控件类型选择当前日期，点击【确定】，在表单上
					就生成了该控件，填写表单时就会自动填入当前日期了。另外宏控件也支持隐藏属性，对不需要在表单显示字段可以将其隐藏。宏控件支持来自SQL查询，语句，下面重点介绍一下。 </p>
                </blockquote>
                <p>来自SQL语句的宏控件，因其定义格式比较复杂，需要具备SQL语言的专业知识，并了解OA系统数据库结构，建议在技术支持人员指导下完成。</p><br/>
                <p>可以参照以下格式书写SQL语句：</p><br/>
                <strong>下拉菜单型语句如：</strong><br/><br/>
                <p>
                    <code>SELECT name FROM book_category ORDER BY sort</code><br/><br/>
					该语句表示列出全部书籍的分类名，并按序号排序显示
                </p>
                <br/>
                <p>
                    <strong>单行输入框语句如：</strong><br/><br/>
                    <code>SELECT realname FROM common_member WHERE username = `gzzr`</code><br/><br/>
					该语句表示查询用户名为gzzr的用户的真实姓名<br/><br/>
                </p>
                <strong>目前，SQL语句中已支持以下宏变量，更加方便用户使用：</strong><br/><br/>
                <code>[sys_user_id]</code> 表示当前用户的用户ID<br/><br/>
                <code>[sys_dept_id]</code> 表示当前用户的部门ID<br/><br/>
                <code>[sys_pos_id]</code> 表示当前用户角色ID<br/><br/>
                <code>[sys_run_id]</code> 表示当前的工作流水号，可用于表单数据表的查询<br/><br/>
                <p>
					例如：<br/><br/>
                    <code>SELECT realname FROM common_member WHERE uid=`[sys_user_id]`</code><br/><br/>
					此句表示查询当前用户的真实姓名
                </p>
                <br/>
                <p>
                    <code>SELECT realname FROM common_member WHERE FIND_IN_SET(deptid,`[sys_dept_id]`)</code><br/><br/>
					此句表示查询当前部门所有用户的姓名
                </p>
                <br/>
                <p>
                    <code>SELECT realname FROM common_membe WHERE deptid = `[sys_dept_id]` ORDER BY uid</code><br/><br/>
					此句表示查询当前部门所有用户的姓名，并按角色序号排序
                </p>
                <p>可以利用SQL语句查询系统代码设置中所设置的代码，实现下拉菜单根据代码定义动态变化：</p><br/><br/>
				例如：<br/><br/>
                <code>SELECT name FROM common_syscode WHERE number = `AREA` ORDER BY sort</code><br/><br/>
                <p>此句表示列出系统代码“地区”的全部值，“地区”的代码编号是“AREA”。</p>
            </div-->
        </div>
        <script type="text/javascript">
            var oNode = null;
            window.onload = function() {
                //如果是编辑控件
                if( UE.plugins['auto'].editdom ) {
                    oNode = UE.plugins['auto'].editdom;
                    if( oNode.tagName == 'INPUT' ) {
                        if(oNode.getAttribute('hide')=='1'){
                            $G('hidden').checked = true;
                        }
                    }
                    $G('itemName').value	= oNode.getAttribute('title');
                    $G('itemType').value	= oNode.getAttribute('datafld');
                    $G('txtSql').value	= oNode.getAttribute('datasrc');
                    var sSizeFull = oNode.style.width;
                    $G('itemWidth').value = sSizeFull.substr(0, sSizeFull.length - 2);//这里的substr是为了去掉末尾的'px'
                    var sFontSize = oNode.style.fontSize;
                    $G('itemSize').value = sFontSize.substr(0, sFontSize.length - 2);//这里的substr是为了去掉末尾的'px'
                }
                fnTypeChange( $G('itemType').value );
            }
			
            function fnShowGuide(){
                $('#tblwrap').slideToggle().siblings().slideToggle();
            }
            function fnTypeChange( sV ){
                var aAllowItem = ['sys_list_dept','sys_list_user','sys_list_pos',
                    'sys_list_prcsuser1','sys_list_prcsuser2','sys_list_manager1',
                    'sys_list_manager2','sys_list_manager3','sys_list_sql'];
                if( sV == "sys_sql" || sV =="sys_list_sql" ){
                    $('#itemSql').show().siblings('tbody').hide();
                } else {
                    $('#itemSql').hide().siblings('tbody').show();
                }
                if($.inArray(sV,aAllowItem) == -1) {
                    $('#hidden').removeAttr('disabled').parent().css('cursor', 'default');
                } else {
                    $G('hidden').checked = false;
                    $('#hidden').attr('disabled','disabled').parent().css('cursor', 'not-allowed');
                }
            }
            function fnCheckSql ( bCheckFlag ) {
                //检测单引号和回车
                var sExpr1 = /\n/g;
                var sExpr2 = /'/g;
                var sSql = $G("txtSql").value;
                if( sSql.match(sExpr1) || sSql.match(sExpr2) ) {
                    var sMsg = "您的sql语句中存在单引号和回车，不符合要求，是否进行替换？";
                    if( window.confirm(sMsg) ) {
                        sSql = sSql.replace( sExpr1,"" );
                        sSql = sSql.replace( sExpr2,"`" );
                        $G("txtSql").innerHTML = sSql;
                    } else {
                        return (false);
                    }
                }
                if( bCheckFlag ) {
                    var oDate = new Date();
                    var sUrl = parent.getItemUrl + '&sql=' + sSql;
                    ajax.request(sUrl, {timeout:60000,onsuccess:function (xhr) {
                            try {
                                alert(xhr.responseText);
                            } catch ( e ) {
                                alert ( ' 测试SQL正确性时遇到问题，请联系OA管理员处理 ');
                                return false;
                            }
                        },onerror:function() {
                            alert('Request TimeOut');
                        }});
                }
                return (true);
            }
            dialog.oncancel = function () {
                if( UE.plugins['auto'].editdom ) {
                    delete UE.plugins['auto'].editdom;
                }
            };
            dialog.onok = function (){
                if ( $G('itemName').value == '' ) {
                    alert('控件名称不能为空');
                    $G('itemName').focus();
                    return false;
                } else if ( $G('itemType').value == 'sys_sql' || $G('itemType').value=='sys_list_sql' ) {
                    if ( $G('txtSql').value == '' ) {
                        alert('SQL查询语句不能为空');
                        return false;
                    } else if ( !fnCheckSql( false )) {
                        return false;
                    }
                }
                if( !oNode ) {
                    var sUrl = parent.getItemUrl;
                    var nItemId = null;
                    ajax.request(sUrl, {timeout:60000,onsuccess:function (xhr) {
                            try {
                                nItemId = xhr.responseText;
                                if ( $G('itemType').value.indexOf('sys_list') < 0 ) {
                                    oNode = document.createElement("input");
                                    oNode.setAttribute('type','text');
                                    oNode.setAttribute('value','{macro}');
                                } else {
                                    oNode = document.createElement("select");
                                    var objOption = new Option('{macro}', '');
                                    oNode.options[oNode.options.length] = objOption;
                                }
                                oNode.setAttribute('title',$G('itemName').value.replace("\"","&quot;") );
                                oNode.setAttribute('name','data_'+ nItemId );
                                oNode.setAttribute('class','auto' );
                                oNode.setAttribute('className','auto');
                                oNode.setAttribute('datafld',$G('itemType').value );
                                oNode.setAttribute('datasrc',$G('txtSql').value );
                                if( $G('hidden').checked ) {
                                    oNode.setAttribute('hide', '1' ) ;
                                } else {
                                    oNode.setAttribute('hide', '0' ) ;
                                }
                                if( $G('itemSize').value != '' ) {
                                    oNode.style.fontSize = $G('itemSize').value + 'px';
                                }
                                if( $G('itemWidth').value!="" ) {
                                    oNode.style.width = $G('itemWidth').value + 'px';
                                }
                                editor.execCommand('insertHtml',oNode.outerHTML);
                                return true;
                            } catch ( e ) {
                                alert ( '插入控件出错，请联系OA管理员解决 ');
                                return false;
                            }
                        },onerror:function() {
                            alert('Request TimeOut');
                        }});
                } else {
                    var nItemId = oNode.getAttribute('name').substr(5);
                    var oNewNode = null;
                    domUtils.remove(oNode,false);  //删除当前控件，再创建一个新的
                    if ( $G('itemType').value.indexOf('sys_list') < 0 ) {
                        oNewNode = document.createElement("input");
                        oNewNode.setAttribute('type','text');
                        oNewNode.setAttribute('value','{macro}');
                    } else {
                        oNewNode = document.createElement("select");
                        var objOption = new Option('{macro}', '');
                        oNewNode.options[oNewNode.options.length] = objOption;
                    }
                    oNewNode.setAttribute('title',$G('itemName').value.replace("\"","&quot;") );
                    oNewNode.setAttribute('name','data_'+ nItemId );
                    oNewNode.setAttribute('class','auto' );
                    oNewNode.setAttribute('className','auto');
                    oNewNode.setAttribute('datafld',$G('itemType').value );
                    oNewNode.setAttribute('datasrc',$G('txtSql').value );
                    if( $G('hidden').checked ) {
                        oNewNode.setAttribute('hide', '1' ) ;
                    } else {
                        oNewNode.setAttribute('hide', '0' ) ;
                    }
                    if( $G('itemSize').value != '' ) {
                        oNewNode.style.fontSize = $G('itemSize').value + 'px';
                    }
                    if( $G('itemWidth').value!="" ) {
                        oNewNode.style.width = $G('itemWidth').value + 'px';
                    }
                    editor.execCommand('insertHtml',oNewNode.outerHTML);
                    delete UE.plugins['auto'].editdom; //使用后清空这个对象，变回新增模式
                }
            };
        </script>
    </body>
</html>
